// src/api/index.js
import axios from 'axios';

// 创建API客户端实例
const createApiClient = (baseURL = '') => {
    const instance = axios.create({
        baseURL,
        timeout: 10000,
        headers: {
            'Content-Type': 'application/json',
            'X-Requested-With': 'XMLHttpRequest'
        }
    });

    // 请求拦截器 - 添加Token
    instance.interceptors.request.use(config => {
        // 从localStorage获取token
        const token = localStorage.getItem('jdtoken');
        // 如果token存在，添加到请求头
        if (token) {
            config.headers.Authorization = token;
        }

        return config;
    }, error => {
        return Promise.reject(error);
    });

    // 响应拦截器 - 错误处理
    instance.interceptors.response.use(response => {
        return response;
    }, error => {
        // 处理授权失败
        if (error.response && error.response.status === 401) {
            console.error('Token验证失败，请重新登录');
            // 可以添加重定向到登录页的逻辑
        }
        return Promise.reject(error);
    });

    // 增强型 POST 方法
    const hDoPost = (url, params, data) => {
        return instance.post(url, data, { params })
            .then(response => {
                if (response.status === 200) {
                    return response.data;
                }
                return Promise.reject(new Error(`请求失败，状态码：${response.status}`));
            })
            .catch(error => {
                console.error('[API Error]', error.config.url, error.message);
                return Promise.reject(error);
            });
    };

    // 增强型 GET 方法
    const hDoGet = (url, params = {}) => {
        return instance.get(url, { params })
            .then(response => {
                if (response.status === 200) {
                    return response.data;
                }
                return Promise.reject(new Error(`请求失败，状态码：${response.status}`));
            })
            .catch(error => {
                console.error('[GET Error]', error.config.url, error.message, `Params: ${JSON.stringify(params)}`);
                return Promise.reject(error);
            });
    };

    return {
        hDoPost,
        hDoGet
    };
};

// 创建全局API客户端实例
const api = createApiClient(window.apiUrl);

// 登录函数 - 获取并保存Token
export const loginUser = async (credentials) => {
    try {
       let params={
            pathId:237
        }
        const response = await api.hDoPost('','',params);
        // 假设响应中包含token
        if (JSON.parse(response.data).code==200) {
            return JSON.parse(response.data)
        }
        throw new Error('登录成功但未收到Token');
    } catch (error) {
        console.error('登录失败:', error);
        throw error;
    }
};

// 获取空调设备列表
export const getAirDeviceList = async (sqlQuery) => {
    try {
        // 构建请求参数
        const params = { sql: sqlQuery };
        // 调用API
        const response = await api.hDoGet('/api/Public/ExecMySql', params);
        return response;
    } catch (error) {
        // 处理特定错误
        if (error.response) {
            if (error.response.status === 401) {
                console.error('Token验证失败，请重新登录');
            } else if (error.response.status === 404) {
                console.error('API端点未找到');
            } else if (error.response.status === 500) {
                console.error('服务器内部错误');
            }
        } else if (error.request) {
            console.error('无响应：', error.request);
        } else {
            console.error('请求错误：', error.message);
        }
        throw error;
    }
};

// 其他API函数...

export default {
    loginUser,
    getAirDeviceList,
    // 其他导出函数...
};